// Copyright 2007-2008 Rory Plaire (codekaizen@gmail.com)

using System;

namespace NPack.Interfaces
{
    /// <summary>
    /// Provides an interface for a factorization of a matrix.
    /// </summary>
    /// <typeparam name="T">Type of matrix element.</typeparam>
    /// <typeparam name="TMatrix">Type of matrix.</typeparam>
    public interface IFactorization<T, TMatrix>
        where T : IEquatable<T>, IComparable<T>, IComputable<T>, IConvertible
        where TMatrix : IMatrix<T>, IEquatable<TMatrix>, IComparable<TMatrix>, IComputable<TMatrix>
    {
        /// <summary>
        /// Gets the matrix which was factored (or decomposed).
        /// </summary>
        TMatrix InputMatrix { get; }
    }
}